﻿#include <vector>
//#include <stack>
#include <iostream>
using namespace std;

void printff(vector<int> &in)
{
	for(int i=0;i<in.size()-1;i++)
		cout<<in[i]<<' ';
	cout<<in[in.size()-1]<<endl;
}

//全排列
void permutation(int index,vector<int> &in)
{
	if(index==in.size()-1) printff(in);
	else
	{
		for(int i=index;i<in.size();i++)
	{
		swap(in[index],in[i]);
		permutation(index+1,in);
		swap(in[index],in[i]);
		
	}
	}
}

//全选择
vector<int> temp;
void dfs(int index,vector<int> &in)
{
	if(temp.size()!=0) printff(temp);
	for(int i=index;i<in.size();i++)
		{
			temp.push_back(in[i]);
			dfs(i+1,in);
			temp.pop_back();
	}


}

int main()
{
	vector<int> a;
	a.push_back(1);
	a.push_back(2);
	a.push_back(3);
	a.push_back(4);
	permutation(0,a);
	dfs(0,a);

}